<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="tool" content="leanote-desktop-app">
<title>IP地址的基础知识</title>
<style>
.tab{font-size:12px; margin-bottom: 10px;}
.tab a{cursor:pointer;cursor:pointer;display:inline-block;margin-right:10px;color:#000}#tab-html{color:#ccc}

.content-container .content-html{visibility: hidden;}
.content-container.html .content-markdown{display:none}
.content-container.html .content-html{display:block; visibility: visible;}
.content-container.html #tab-markdown{color:#ccc}
.content-container.html #tab-html{color:#000}
.content-markdown {overflow: auto;}
textarea {display: none;}

*{font-family:"lucida grande","lucida sans unicode",lucida,helvetica,"Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;}

body {
  margin: 0;
}

/*公用文字样式*/
h1{font-size:30px}h2{font-size:24px}h3{font-size:18px}h4{font-size:14px}
.note-container{
    width:850px; 
    margin:auto;
    padding: 10px 20px;
    box-shadow: 1px 1px 10px #eee;
}
#title {
  margin: 0;
}
table {
    margin-bottom: 16px;
    border-collapse: collapse;
}
table th, table td {
    padding: 6px 13px;
    border: 1px solid #ddd;
}
table th {
    font-weight: bold;
}

table tr {
    background-color: none;
    border-top: 1px solid #ccc;
}
table tr:nth-child(2n) {
    background-color: rgb(247, 247, 249);
}
.mce-item-table, .mce-item-table td, .mce-item-table th, .mce-item-table caption {
  border: 1px solid #ddd;
  border-collapse: collapse;
  padding: 6px 13px;
}
blockquote {
  border-left-width:10px;
  background-color:rgba(128,128,128,0.05);
  border-top-right-radius:5px;
  border-bottom-right-radius:5px;
  padding:15px 20px;
  border-left:5px solid rgba(128,128,128,0.075);
}
blockquote p {
  margin-bottom:1.1em;
  font-size:1em;
  line-height:1.45
}
blockquote ul:last-child,blockquote ol:last-child {
  margin-bottom:0
}
pre {
  padding: 18px;
  background-color: #f7f7f9;
  border: 1px solid #e1e1e8;
  border-radius: 3px;
  display: block;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  white-space: nowrap;
  background-color: #f9f2f4;
  border-radius: 4px;
}
.footnote {
  vertical-align: top;
  position: relative;
  top: -0.5em;
  font-size: .8em;
}

hr {
  margin:2em 0
}
img {
  max-width:100%;
  display: block;
  margin: auto;
}
pre {
  word-break:break-word
}
p,pre,pre.prettyprint,blockquote {
  margin:0 0 1.1em
}
hr {
  margin:2em 0
}
img {
  max-width:100%
}
.sequence-diagram,.flow-chart {
  text-align:center;
  margin-bottom:1.1em
}
.sequence-diagram text,.flow-chart text {
  font-size:15px !important;
  font-family:"Source Sans Pro",sans-serif !important
}
.sequence-diagram [fill="#ffffff"],.flow-chart [fill="#ffffff"] {
  fill:#f6f6f6
}
.sequence-diagram [stroke="#000000"],.flow-chart [stroke="#000000"] {
  stroke:#3f3f3f
}
.sequence-diagram text[stroke="#000000"],.flow-chart text[stroke="#000000"] {
  stroke:none
}
.sequence-diagram [fill="#000"],.flow-chart [fill="#000"],.sequence-diagram [fill="#000000"],.flow-chart [fill="#000000"],.sequence-diagram [fill="black"],.flow-chart [fill="black"] {
  fill:#3f3f3f
}
ul,ol {
  margin-bottom:1.1em
}
ul ul,ol ul,ul ol,ol ol {
  margin-bottom:1.1em
}
kbd {
  padding:.1em .6em;
  border:1px solid rgba(63,63,63,0.25);
  -webkit-box-shadow:0 1px 0 rgba(63,63,63,0.25);
  box-shadow:0 1px 0 rgba(63,63,63,0.25);
  font-size:.7em;
  font-family:sans-serif;
  background-color:#fff;
  color:#333;
  border-radius:3px;
  display:inline-block;
  margin:0 .1em;
  white-space:nowrap
}
.toc ul {
  list-style-type:none;
  margin-bottom:15px
}
.m-todo-item {
  list-style: none;
}
pre code {
  padding: 0;
  color: inherit;
  white-space: pre-wrap;
  background-color: inherit;
  border-radius: 0;
}
</style>
<!-- 该css供自定义样式 -->
<link href="../leanote-markdown.css" rel="stylesheet">
</head>

<body>

	<div class="note-container">
		<h1 class="title" id="leanote-title">IP地址的基础知识</h1>
		<div class="content-container html" id="content-container">
			<!-- 切换 -->
			<div class="tab"><a id="tab-markdown">Markdown</a><a id="tab-html">HTML</a></div>
			<textarea id="leanote-content-markdown">[TOC]

# IP地址的定义

IP地址（IPv4地址）由32位二进制数表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。

# IP地址由网络和主机两部分标识组成
网络标识在数据链路的每个段配置不同的值，网络标识必须保证相互连接的每个段地址不相重复。而相同段内互联的主机必须具有相同的网络地址。

IP的主机标识则不允许在同一个网段内重复出现。

由此，可以通过设置网络地址和主机地址，在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠，即IP地址具有了唯一性。

# IP地址的分类

- A类地址：
首位以0开头，从`1~18`位为网络标识，用十进制表示：0.0.0.0~127.0.0.0；

- B类地址：
前两位为10，从`1~16`位为网络标识，用十进制表示：128.0.0.0~191.255.0.0；

- C类地址：
以110开头，从`1~24`位为网络标识，用十进制表示：192.168.0.0~293.255.255.0；

- D类地址：
以1110开头，从`1~32`位为网络标识，用十进制表示：244.0.0.0~239.255.255.255；

![](IP地址的基础知识_files/59706f9e6393cc77ce000008.png)

# 广播地址
广播分为本地广播和直接广播两种。

- 在本网络内的广播叫做本地广播。
例如网络地址为192.168.0.0/24的情况下，广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽，所以不会到达192.168.0.0/24以外的其他链路上。

- 在不同网络之间的广播叫做直接广播。
例如网络地址为192.168.0.0/24的主机向102.168.1.255/24的目标主机发送IP包。收到这个包的路由器，将数据转发给192.168.1.0/24，从而使所有192.168.1.1-192.168.1.254的主机都能收到这个包。


# IP多播

## 提示发送提高效率
多播用于将包发送给特定组内的所有主机。由于其直接使用IP协议，因此也不存在可靠传输。

在电视会议系统中对于1对N、N对N通信的需求明显上升。而具体实现上网采用赋值1对1通信的数据，将其同时发送给多个主机的方式。

在人们使用多播功能之前，一直采用广播，再由这些主机IP之上的一层去判断是否有必要接收数据。而且广播无法穿越路由，想给其他网段发同样的包，就必须采取另一种机制。多播纠正了必选之路。
![](IP地址的基础知识_files/597070966393cc77ce000009.png)

![](IP地址的基础知识_files/597070ab6393cc77ce00000a.png)

## IP多播和地址

多播使用D类地址。因此，如果从首位开始到第4位是“1110”，就可以认为是多播地址。而剩下的29位可以成为多播的组编号。

从224.0.0.0到239.255.255.255都是多播地址的可选范围。其中从224.0.0.0到224.0.0.255的范围不需要路由控制。在同一个链路内也能实现多播。而在这个范围之外设置多播地址会给全网所有组内成员发送多播的包（可以利用生存时间TTL Time to Live限制包的达到范围）。

此外，对于多播，所有主机（路由器以外的主机和终端主机）必须属于224.0.0.1的组，所有的路由器必须属于224.0.0.2的组。类似，多播地址中众多已知的地址：
![](IP地址的基础知识_files/597071db6393cc77ce00000b.png)

# 子网和子网掩码

现在，一个IP地址的网络标识和主机标识已不再受限于该地址的类别，而是一个叫做“子网掩码”的识别码通过子网网络地址细分出比A、B、C更小粒度的网络。这种方式实际上就是将原来A、B、C类等分类中的主机地址部分用作子网地址，可以将原网络分为多个物理网络的一种机制。

# CIDR与VLSM

CIDR中文全称是无分类域间路由选择，英文全称是Classless Inter-Domain Routing，在平常，大家多称之为无分类编址，它也是构成超网的一种技术实现。CIDR在一定程度上解决了路由表项目过多过大的问题。CIDR之所以称为无分类编址，就是因为CIDR完全放弃了之前的分类IP地址表示法，它真正消除了传统的A类、B类、C类地址以及划分子网的概念，它使用如下的IP地址表示法：
> IP地址 ::= {<网络前缀>， <主机号>} / 网络前缀所占位数
 
CIDR仅将IP地址划分为网络前缀和主机号两个部分，可以说又回到了二级IP地址的表示，不过大家要注意，最后面用“/”斜线分隔，在其后写上了网络前缀所占的位数，这样就不需要告知路由器地址掩码，仅需要通过网络前缀所占的位数就可以得到地址掩码，为了统一，CIDR中的地址掩码依然称为子网掩码。

CIDR表示法给出任何一个IP地址，就相当于给出了一个CIDR地址块，这是由连续的IP地址组成的，所以CIDR表示法构成了超网，实现了路由聚合，即从一个IP地址就可以得知一个CIDR地址块。例如：已知一个IP地址是：128.14.35.7/20，那么这个已知条件告诉大家的并不仅仅是一个IP地址这么简单，我们来分析一下。

> 128.14.35.7/20 = 10000000  00001110  00100011  00000111

即前20位是网络前缀，后12位是主机号，那么我们通过令主机号分别为全0和全1就可以得到一个CIDR地址块的最小地址和最大地址，即:

>最小地址是：128.14.32.0    = 10000000  00001110  00100000  00000000 
最大地址是：128.14.47.255   = 10000000  00001110  00101111 11111111     
子网掩码是：255.255.240.0   = 11111111  11111111  11110000  00000000


因此就可以看出来，这个CIDR地址块可以指派(47-32+1)*256=4096个地址，这里没有把全0和全1除外。

在CIDR被应用到互联网的初期，网络内部采用固定长度的子网掩码机制。也就是说域内所有子网掩码都要使用相同的长度。而部门之间要求的主机数是不同的，如果全部采用统一标准，就难以架构一个高效的网路结构。为此人们提出组织内要是用可变长度的、高效的IP地址分配方式。

于是产生了一种可以随机修改组织内各个部门子网掩码长度的机制–VLSM（Verable Length Subnet Mask 可变长子网掩码）。它可以通过域间路由协议转换为RIP2以及OSPF实现。

在CIDR表示法中也可以进行进一步的子网划分，和子网划分类似，我们只需要从主机号中借走一定的位数即可，这里与前面的基本子网划分不同，借走2位时可以划分成4个子网，不用减2，其他位数类似。

目前已经广泛使用CIDR表示法，之前的分类方法和子网划分已经很少使用。

# 全局地址与私有地址
起初，互联网中的任何一台主机或路由器必须配备一个唯一的IP地址，一旦出现地址冲突，就会使发送端无法判断究竟应该发给哪个地址。而接收端收到数据包以后发送回执时，发送端也不知道究竟事哪个主机返回的信息。

然而，随着互联网的迅速普及，IP地址不足的问题日趋显著。如果一直按照现行的方法采用唯一地址，会有IP耗尽的危险。于是就出现了一种新技术，它不要求为每一台主机或路由器分配一个固定的IP地址，而是在必要的时候只为相应数量的设备分配唯一的IP地址。

对于没有连接互联网的独立网络中的主机，只要保证这个网络内地址唯一，就可以不用考虑互联网即可配置相应的IP地址。但这样也可能有问题（不小心误连到网络或者连接了两个本来独立的网络时），于是又出现了私有网络的IP地址，它的地址范围如下：

|地址范围|	掩码表示|	地址类别|
|---|---|---|
|10.0.0.0 ~ 10.255.255.255	|10/8	|A类|
|172.16.0.0 ~ 172.31.255.255|	172.16/12|	B类|
|192.168.0.0 ~ 192.168.255.255|	192.168/16|	C类|

包含在这个范围内的IP地址都属于私有IP，除此之外的都成为全局IP。

私有地址最早没计划连接互联网，而只用于互联网之外的独立网络。然而现在有了能够互换私有IP与全局IP的NAT技术后，配有私有地址的主机与配有全局地址的互联网主机就能实现通信。

全局IP地址基本上要在整个互联网范围内保持唯一，但私有IP地址不需要，只要在同一个域内保证唯一即可。

# 全局IP地址管理
全局IP地址由ICANN（Internet Corporation for Asigned Names and Numbers）管理。

在互联网被广泛商用之前，用户只有直接向管理机构申请共有IP地址才能接入互联网。然而，随着ISP的出现，人们在向ISP申请接入互联网的同时，还会申请全局IP地址。在这种情况下，实际上是ISP代替用户向管理机构申请了共有IP地址。

</textarea>
			<!-- markdown -->
			<pre class="content-markdown">[TOC]

# IP地址的定义

IP地址（IPv4地址）由32位二进制数表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。

# IP地址由网络和主机两部分标识组成
网络标识在数据链路的每个段配置不同的值，网络标识必须保证相互连接的每个段地址不相重复。而相同段内互联的主机必须具有相同的网络地址。

IP的主机标识则不允许在同一个网段内重复出现。

由此，可以通过设置网络地址和主机地址，在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠，即IP地址具有了唯一性。

# IP地址的分类

- A类地址：
首位以0开头，从`1~18`位为网络标识，用十进制表示：0.0.0.0~127.0.0.0；

- B类地址：
前两位为10，从`1~16`位为网络标识，用十进制表示：128.0.0.0~191.255.0.0；

- C类地址：
以110开头，从`1~24`位为网络标识，用十进制表示：192.168.0.0~293.255.255.0；

- D类地址：
以1110开头，从`1~32`位为网络标识，用十进制表示：244.0.0.0~239.255.255.255；

![](IP地址的基础知识_files/59706f9e6393cc77ce000008.png)

# 广播地址
广播分为本地广播和直接广播两种。

- 在本网络内的广播叫做本地广播。
例如网络地址为192.168.0.0/24的情况下，广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽，所以不会到达192.168.0.0/24以外的其他链路上。

- 在不同网络之间的广播叫做直接广播。
例如网络地址为192.168.0.0/24的主机向102.168.1.255/24的目标主机发送IP包。收到这个包的路由器，将数据转发给192.168.1.0/24，从而使所有192.168.1.1-192.168.1.254的主机都能收到这个包。


# IP多播

## 提示发送提高效率
多播用于将包发送给特定组内的所有主机。由于其直接使用IP协议，因此也不存在可靠传输。

在电视会议系统中对于1对N、N对N通信的需求明显上升。而具体实现上网采用赋值1对1通信的数据，将其同时发送给多个主机的方式。

在人们使用多播功能之前，一直采用广播，再由这些主机IP之上的一层去判断是否有必要接收数据。而且广播无法穿越路由，想给其他网段发同样的包，就必须采取另一种机制。多播纠正了必选之路。
![](IP地址的基础知识_files/597070966393cc77ce000009.png)

![](IP地址的基础知识_files/597070ab6393cc77ce00000a.png)

## IP多播和地址

多播使用D类地址。因此，如果从首位开始到第4位是“1110”，就可以认为是多播地址。而剩下的29位可以成为多播的组编号。

从224.0.0.0到239.255.255.255都是多播地址的可选范围。其中从224.0.0.0到224.0.0.255的范围不需要路由控制。在同一个链路内也能实现多播。而在这个范围之外设置多播地址会给全网所有组内成员发送多播的包（可以利用生存时间TTL Time to Live限制包的达到范围）。

此外，对于多播，所有主机（路由器以外的主机和终端主机）必须属于224.0.0.1的组，所有的路由器必须属于224.0.0.2的组。类似，多播地址中众多已知的地址：
![](IP地址的基础知识_files/597071db6393cc77ce00000b.png)

# 子网和子网掩码

现在，一个IP地址的网络标识和主机标识已不再受限于该地址的类别，而是一个叫做“子网掩码”的识别码通过子网网络地址细分出比A、B、C更小粒度的网络。这种方式实际上就是将原来A、B、C类等分类中的主机地址部分用作子网地址，可以将原网络分为多个物理网络的一种机制。

# CIDR与VLSM

CIDR中文全称是无分类域间路由选择，英文全称是Classless Inter-Domain Routing，在平常，大家多称之为无分类编址，它也是构成超网的一种技术实现。CIDR在一定程度上解决了路由表项目过多过大的问题。CIDR之所以称为无分类编址，就是因为CIDR完全放弃了之前的分类IP地址表示法，它真正消除了传统的A类、B类、C类地址以及划分子网的概念，它使用如下的IP地址表示法：
> IP地址 ::= {<网络前缀>， <主机号>} / 网络前缀所占位数
 
CIDR仅将IP地址划分为网络前缀和主机号两个部分，可以说又回到了二级IP地址的表示，不过大家要注意，最后面用“/”斜线分隔，在其后写上了网络前缀所占的位数，这样就不需要告知路由器地址掩码，仅需要通过网络前缀所占的位数就可以得到地址掩码，为了统一，CIDR中的地址掩码依然称为子网掩码。

CIDR表示法给出任何一个IP地址，就相当于给出了一个CIDR地址块，这是由连续的IP地址组成的，所以CIDR表示法构成了超网，实现了路由聚合，即从一个IP地址就可以得知一个CIDR地址块。例如：已知一个IP地址是：128.14.35.7/20，那么这个已知条件告诉大家的并不仅仅是一个IP地址这么简单，我们来分析一下。

> 128.14.35.7/20 = 10000000  00001110  00100011  00000111

即前20位是网络前缀，后12位是主机号，那么我们通过令主机号分别为全0和全1就可以得到一个CIDR地址块的最小地址和最大地址，即:

>最小地址是：128.14.32.0    = 10000000  00001110  00100000  00000000 
最大地址是：128.14.47.255   = 10000000  00001110  00101111 11111111     
子网掩码是：255.255.240.0   = 11111111  11111111  11110000  00000000


因此就可以看出来，这个CIDR地址块可以指派(47-32+1)*256=4096个地址，这里没有把全0和全1除外。

在CIDR被应用到互联网的初期，网络内部采用固定长度的子网掩码机制。也就是说域内所有子网掩码都要使用相同的长度。而部门之间要求的主机数是不同的，如果全部采用统一标准，就难以架构一个高效的网路结构。为此人们提出组织内要是用可变长度的、高效的IP地址分配方式。

于是产生了一种可以随机修改组织内各个部门子网掩码长度的机制–VLSM（Verable Length Subnet Mask 可变长子网掩码）。它可以通过域间路由协议转换为RIP2以及OSPF实现。

在CIDR表示法中也可以进行进一步的子网划分，和子网划分类似，我们只需要从主机号中借走一定的位数即可，这里与前面的基本子网划分不同，借走2位时可以划分成4个子网，不用减2，其他位数类似。

目前已经广泛使用CIDR表示法，之前的分类方法和子网划分已经很少使用。

# 全局地址与私有地址
起初，互联网中的任何一台主机或路由器必须配备一个唯一的IP地址，一旦出现地址冲突，就会使发送端无法判断究竟应该发给哪个地址。而接收端收到数据包以后发送回执时，发送端也不知道究竟事哪个主机返回的信息。

然而，随着互联网的迅速普及，IP地址不足的问题日趋显著。如果一直按照现行的方法采用唯一地址，会有IP耗尽的危险。于是就出现了一种新技术，它不要求为每一台主机或路由器分配一个固定的IP地址，而是在必要的时候只为相应数量的设备分配唯一的IP地址。

对于没有连接互联网的独立网络中的主机，只要保证这个网络内地址唯一，就可以不用考虑互联网即可配置相应的IP地址。但这样也可能有问题（不小心误连到网络或者连接了两个本来独立的网络时），于是又出现了私有网络的IP地址，它的地址范围如下：

|地址范围|	掩码表示|	地址类别|
|---|---|---|
|10.0.0.0 ~ 10.255.255.255	|10/8	|A类|
|172.16.0.0 ~ 172.31.255.255|	172.16/12|	B类|
|192.168.0.0 ~ 192.168.255.255|	192.168/16|	C类|

包含在这个范围内的IP地址都属于私有IP，除此之外的都成为全局IP。

私有地址最早没计划连接互联网，而只用于互联网之外的独立网络。然而现在有了能够互换私有IP与全局IP的NAT技术后，配有私有地址的主机与配有全局地址的互联网主机就能实现通信。

全局IP地址基本上要在整个互联网范围内保持唯一，但私有IP地址不需要，只要在同一个域内保证唯一即可。

# 全局IP地址管理
全局IP地址由ICANN（Internet Corporation for Asigned Names and Numbers）管理。

在互联网被广泛商用之前，用户只有直接向管理机构申请共有IP地址才能接入互联网。然而，随着ISP的出现，人们在向ISP申请接入互联网的同时，还会申请全局IP地址。在这种情况下，实际上是ISP代替用户向管理机构申请了共有IP地址。

</pre>
			<!-- html -->
			<div class="content-html" id="leanote-content-html"></div>
		</div>
	</div>

<!-- 该js供其它处理 -->
<script src="../leanote-markdown.js"></script>
<script src="http://leanote.github.io/markdown-to-html/markdown-to-html.min.js"></script>
<script>
function init() {
	markdownToHtml(document.getElementById('leanote-content-markdown').value, document.getElementById('leanote-content-html'), function(html) {
		// 解析后执行
		if(window.markdownParsed) {
			window.markdownParsed(html);
		}
	});
	var $m = document.getElementById('tab-markdown');
	var $h = document.getElementById('tab-html');
	var $cc = document.getElementById('content-container');
	function toggleToHtml(isToHtml) {
		$cc.className = isToHtml ? 'content-container html' : 'content-container';
	}
	$m.addEventListener('click', function() {
		toggleToHtml(false);
	});
	$h.addEventListener('click', function() {
		toggleToHtml(true);
	});
}

// 如果不要自动解析html, notParseMarkdown在leanote-markdown.js中定义
if(!window.notParseMarkdown) {
	init();
}
</script>
</body>
</html>